Some traditional systems of storing data on a cluster of storages at a data center include various drawbacks. A first example drawback is that typically, a large amount of data is transferred through the Ethernet fabric and imposes a heavy burden on the network infrastructure. A second example drawback is that presently, a storage server processor, such as a central processing unit (CPU), is needed to handle the erasure coding and decoding, which is computationally burdensome on the CPU. A third drawback is that because typically, a copy of the same data block needs to be separately written at each of multiple storages in the cluster, each storage's data cache, which may include flash storage, can be degraded over time due to the extensive writing of data. To withstand the frequent writing of data blocks, higher performance flash storage may be used, which further increases cost. A fourth drawback is that it takes a non-trivial amount of time to write a copy of the same data block at each of various storages in the cluster.